iT邦幫忙

2021 iThome 鐵人賽

2

以下內容同步更新於
https://kevinyay945.com/smart-home-tutorial/027/

在這個之前的程式,都是先到資料庫那邊下語法建好表,然後再到程式這邊新增需要的屬性,但這個會有個問題是,如果有一天你需要到新的環境將你的程式部署起來,或是你需要兩個月前的資料庫型態,這時候就會發生你不知道之前執行了什麼樣的sql語法,不曉得兩個月前的資料庫長得怎麼樣(在你資料庫沒有定期備份的情況下)
因此,需要有個機制可以將資料庫的狀態也那納入git的版本控制

在這邊,我使用到的是
https://github.com/golang-migrate/migrate
來幫我們進行資料庫的版本控制
沒有選擇使用gorm的migrate而是直接使用語法的原因主要是因為資料庫如果需要用一些gorm沒有寫到的extension,還是得把這些extension放到程式中,所以才會直接選擇使用語法來進行資料庫的表的版本控制

而這個migrate的工具的使用方式還蠻簡單的
https://github.com/golang-migrate/migrate/blob/master/MIGRATIONS.md
在你需要的地方放上他指定規則的sql檔案

{version}_{title}.up.{extension}
{version}_{title}.down.{extension}

他的version要持續變多,第一個是1,第二個就是2,當然你也可以直接跳10,只要數字變多就可以了
接著,關於up/down的部分,因為在這種版本控制呢,會出現說你今天把原本的程式升級到v2.0.0版,卻發生了很大的bug,需要退回到v1.9.7版,那你的資料庫也會需要將資料變成v1.9.7的形狀,所以up跟down基本上是要相輔相成的,如果up有創表(create table...),那down就要刪表(drop table ...)

他的教學也寫得蠻詳盡的,如果有需要可以點進他的github閱讀他的readme喔

而下面是這次的寫的過成和程式碼

https://www.youtube.com/watch?v=98v_rdLQdYs

https://github.com/kevinyay945/smart-home-backend/tree/v0.6.0


上一篇
撰寫http request 的複雜一點的測試(Day26)
下一篇
建立表與表之間的關聯(Day28)
系列文
網頁新手入門,手把手用React/Golang(Echo)開發基礎網頁(以簡易智慧家庭為例)28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言